<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Zend_Service_StrikeIron - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/zend.service.strikeiron.html">Inglês (English)</a></li>
    <li><a href="../pt-br/zend.service.strikeiron.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.service.slideshare.html">Zend_Service_SlideShare</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.service.html">Zend_Service</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.service.strikeiron.bundled-services.html">Zend_Service_StrikeIron: Bundled Services</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.service.strikeiron" class="section"><div class="info"><h1 class="title">Zend_Service_StrikeIron</h1></div>
    

    <p class="para">
        <span class="classname">Zend_Service_StrikeIron</span> provides a <acronym class="acronym">PHP</acronym> 5 client to
        StrikeIron web services. See the following sections:
    </p>

    <p class="para">
        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para"><a href="zend.service.strikeiron.html" class="link">Zend_Service_StrikeIron</a></p>
            </li>
        </ul>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    <a href="zend.service.strikeiron.bundled-services.html" class="link">Bundled Services</a>
                </p>
            </li>
        </ul>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    <a href="zend.service.strikeiron.advanced-uses.html" class="link">Advanced Use</a>
                </p>
            </li>
        </ul>
    </p>

    <div class="section" id="zend.service.strikeiron.overview"><div class="info"><h1 class="title">Overview</h1></div>
        

        <p class="para">
            <a href="http://www.strikeiron.com" class="link external">&raquo; StrikeIron</a>
            offers hundreds of commercial data services (&quot;Data as a Service&quot;)
            such as Online Sales Tax, Currency Rates, Stock Quotes, Geocodes, Global
            Address Verification, Yellow/White Pages, MapQuest Driving Directions,
            Dun &amp; Bradstreet Business Credit Checks, and much, much more.
        </p>

        <p class="para">
            Each StrikeIron web service shares a standard <acronym class="acronym">SOAP</acronym> (and REST)
            <acronym class="acronym">API</acronym>, making it easy to integrate and manage multiple services.
            StrikeIron also manages customer billing for all services in a single
            account, making it perfect for solution providers. Get
            started with free web services at
            <a href="http://www.strikeiron.com/sdp" class="link external">&raquo; http://www.strikeiron.com/sdp</a>.
        </p>

        <p class="para">
            StrikeIron&#039;s services may be used through the
            <a href="http://us.php.net/soap" class="link external">&raquo; PHP 5 <acronym class="acronym">SOAP</acronym> extension</a>
            alone. However, using StrikeIron this way does not give an ideal
            <acronym class="acronym">PHP</acronym>-like interface. The
            <span class="classname">Zend_Service_StrikeIron</span> component provides a lightweight layer on
            top of the <acronym class="acronym">SOAP</acronym> extension for working with StrikeIron services in a
            more convenient, <acronym class="acronym">PHP</acronym>-like manner.
        </p>

        <blockquote class="note"><p><b class="note">Note</b>: 
            <p class="para">
                The <acronym class="acronym">PHP</acronym> 5 <acronym class="acronym">SOAP</acronym> extension must be installed and
                enabled to use <span class="classname">Zend_Service_StrikeIron</span>.
            </p>
        </p></blockquote>

        <p class="para">
            The <span class="classname">Zend_Service_StrikeIron</span> component provides:

            <ul class="itemizedlist">
                <li class="listitem">
                    <p class="para">
                        A single point for configuring your StrikeIron authentication credentials
                        that can be used across many StrikeIron services.
                    </p>
                </li>

                <li class="listitem">
                    <p class="para">
                        A standard way of retrieving your StrikeIron subscription information
                        such as license status and the number of hits remaining to a service.
                    </p>
                </li>

                <li class="listitem">
                    <p class="para">
                        The ability to use any StrikeIron service from its WSDL without
                        creating a <acronym class="acronym">PHP</acronym> wrapper class, and the option of creating
                        a wrapper for a more convenient interface.
                    </p>
                </li>

                <li class="listitem">
                    <p class="para">
                        Wrappers for three popular StrikeIron services.
                    </p>
                </li>
            </ul>
        </p>
    </div>

    <div class="section" id="zend.service.strikeiron.registering"><div class="info"><h1 class="title">Registering with StrikeIron</h1></div>
        

        <p class="para">
            Before you can get started with <span class="classname">Zend_Service_StrikeIron</span>, you must
            first <a href="http://strikeiron.com/Register.aspx" class="link external">&raquo; register</a> for a
            StrikeIron developer account.
        </p>

        <p class="para">
            After registering, you will receive a StrikeIron username and password.
            These will be used when connecting to StrikeIron using
            <span class="classname">Zend_Service_StrikeIron</span>.
        </p>

        <p class="para">
            You will also need to <a href="http://www.strikeiron.com/ProductDetail.aspx?p=257" class="link external">&raquo; sign up</a>
            for StrikeIron&#039;s Super Data Pack Web Service.
        </p>

        <p class="para">
            Both registration steps are free and can be done relatively quickly through
            the StrikeIron website.
        </p>
    </div>

    <div class="section" id="zend.service.strikeiron.getting-started"><div class="info"><h1 class="title">Getting Started</h1></div>
        

        <p class="para">
            Once you have <a href="http://strikeiron.com/Register.aspx" class="link external">&raquo; registered</a>
            for a StrikeIron account and signed up for the
            <a href="http://www.strikeiron.com/ProductDetail.aspx?p=257" class="link external">&raquo; Super Data Pack</a>,
            you&#039;re ready to start using <span class="classname">Zend_Service_StrikeIron</span>.
        </p>

        <p class="para">
            StrikeIron consists of hundreds of different web services.
            <span class="classname">Zend_Service_StrikeIron</span> can be used with many of these services
            but provides supported wrappers for three of them:
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">
                    <a href="zend.service.strikeiron.bundled-services.html#zend.service.strikeiron.bundled-services.zip-code-information" class="link">ZIP
                        Code Information</a>
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <a href="zend.service.strikeiron.bundled-services.html#zend.service.strikeiron.bundled-services.us-address-verification" class="link">US
                        Address Verification</a>
                </p>
            </li>

            <li class="listitem">
                <p class="para">
                    <a href="zend.service.strikeiron.bundled-services.html#zend.service.strikeiron.bundled-services.sales-use-tax-basic" class="link">Sales
                        &amp; Use Tax Basic</a>
                </p>
            </li>
        </ul>

        <p class="para">
            The class <span class="classname">Zend_Service_StrikeIron</span> provides a simple way
            of specifying your StrikeIron account information and other options in
            its constructor. It also has a factory method that will return clients
            for StrikeIron services:
        </p>

        <pre class="programlisting brush: php">
$strikeIron = new Zend_Service_StrikeIron(array(&#039;username&#039; =&gt; &#039;your-username&#039;,
                                                &#039;password&#039; =&gt; &#039;your-password&#039;));

$taxBasic = $strikeIron-&gt;getService(array(&#039;class&#039; =&gt; &#039;SalesUseTaxBasic&#039;));
</pre>


        <p class="para">
            The  <span class="methodname">getService()</span> method will return a client for any
            StrikeIron service by the name of its <acronym class="acronym">PHP</acronym> wrapper class. In this
            case, the name &#039;SalesUseTaxBasic&#039; refers to the wrapper class
            <span class="classname">Zend_Service_StrikeIron_SalesUseTaxBasic</span>. Wrappers are
            included for three services and described in
            <a href="zend.service.strikeiron.bundled-services.html" class="link">Bundled Services</a>.
        </p>

        <p class="para">
            The  <span class="methodname">getService()</span> method can also return a client for
            a StrikeIron service that does not yet have a <acronym class="acronym">PHP</acronym> wrapper. This is
            explained in
            <a href="zend.service.strikeiron.advanced-uses.html#zend.service.strikeiron.advanced-uses.services-by-wsdl" class="link">Using Services by
                WSDL</a>.
        </p>
    </div>

    <div class="section" id="zend.service.strikeiron.making-first-query"><div class="info"><h1 class="title">Making Your First Query</h1></div>
        

        <p class="para">
            Once you have used the  <span class="methodname">getService()</span> method to get a client
            for a particular StrikeIron service, you can utilize that client
            by calling methods on it just like any other <acronym class="acronym">PHP</acronym> object.
        </p>

        <pre class="programlisting brush: php">
$strikeIron = new Zend_Service_StrikeIron(array(&#039;username&#039; =&gt; &#039;your-username&#039;,
                                                &#039;password&#039; =&gt; &#039;your-password&#039;));

// Get a client for the Sales &amp; Use Tax Basic service
$taxBasic = $strikeIron-&gt;getService(array(&#039;class&#039; =&gt; &#039;SalesUseTaxBasic&#039;));

// Query tax rate for Ontario, Canada
$rateInfo = $taxBasic-&gt;getTaxRateCanada(array(&#039;province&#039; =&gt; &#039;ontario&#039;));
echo $rateInfo-&gt;province;
echo $rateInfo-&gt;abbreviation;
echo $rateInfo-&gt;GST;
</pre>


        <p class="para">
            In the example above, the  <span class="methodname">getService()</span> method is used
            to return a client to the <a href="zend.service.strikeiron.bundled-services.html#zend.service.strikeiron.bundled-services.sales-use-tax-basic" class="link">Sales &amp;
                Use Tax Basic</a> service. The client object is stored in
            <var class="varname">$taxBasic</var>.
        </p>

        <p class="para">
            The  <span class="methodname">getTaxRateCanada()</span> method is then called on the
            service. An associative array is used to supply keyword parameters to
            the method. This is the way that all StrikeIron methods are called.
        </p>

        <p class="para">
            The result from  <span class="methodname">getTaxRateCanada()</span> is stored in
            <var class="varname">$rateInfo</var> and has properties like <span class="property">province</span>
            and <b><tt>GST</tt></b>.
        </p>

        <p class="para">
            Many of the StrikeIron services are as simple to use as the example above. See
            <a href="zend.service.strikeiron.bundled-services.html" class="link">Bundled Services</a>
            for detailed information on three StrikeIron services.
        </p>
    </div>

    <div class="section" id="zend.service.strikeiron.examining-results"><div class="info"><h1 class="title">Examining Results</h1></div>
        

        <p class="para">
            When learning or debugging the StrikeIron services, it&#039;s often useful to dump the
            result returned from a method call. The result will always be an object that is an
            instance of <span class="classname">Zend_Service_StrikeIron_Decorator</span>. This is a
            small <a href="http://en.wikipedia.org/wiki/Decorator_pattern" class="link external">&raquo; decorator</a>
            object that wraps the results from the method call.
        </p>

        <p class="para">
            The simplest way to examine a result from the service is to use the built-in
            <acronym class="acronym">PHP</acronym> functions like <a href="http://www.php.net/print_r" class="link external">&raquo; print_r()</a>:
        </p>

        <pre class="programlisting brush: php">
&lt;?php
$strikeIron = new Zend_Service_StrikeIron(array(&#039;username&#039; =&gt; &#039;your-username&#039;,
                                                &#039;password&#039; =&gt; &#039;your-password&#039;));

$taxBasic = $strikeIron-&gt;getService(array(&#039;class&#039; =&gt; &#039;SalesUseTaxBasic&#039;));

$rateInfo = $taxBasic-&gt;getTaxRateCanada(array(&#039;province&#039; =&gt; &#039;ontario&#039;));
print_r($rateInfo);
?&gt;

Zend_Service_StrikeIron_Decorator Object
(
    [_name:protected] =&gt; GetTaxRateCanadaResult
    [_object:protected] =&gt; stdClass Object
        (
            [abbreviation] =&gt; ON
            [province] =&gt; ONTARIO
            [GST] =&gt; 0.06
            [PST] =&gt; 0.08
            [total] =&gt; 0.14
            [HST] =&gt; Y
        )
)
</pre>


        <p class="para">
            In the output above, we see that the decorator (<var class="varname">$rateInfo</var>) wraps an
            object named <span class="classname">GetTaxRateCanadaResult</span>, the result of the call to
             <span class="methodname">getTaxRateCanada()</span>.
        </p>

        <p class="para">
            This means that <var class="varname">$rateInfo</var> has public properties like
            <span class="property">abbreviation</span>, <span class="property">province</span>, and
            <b><tt>GST</tt></b>. These are accessed like
            <strong class="command">$rateInfo-&gt;province</strong>.
        </p>

        <div class="tip"><b class="tip">Tip</b>
            <p class="para">
                StrikeIron result properties sometimes start with an uppercase letter such as
                <span class="property">Foo</span> or <span class="property">Bar</span> where most
                <acronym class="acronym">PHP</acronym> object properties normally start with a lowercase letter as
                in <span class="property">foo</span> or <span class="property">bar</span>. The decorator will
                automatically do this inflection so you may read a property <span class="property">Foo</span>
                as <span class="property">foo</span>.
            </p>
        </div>

        <p class="para">
            If you ever need to get the original object or its name out of the decorator, use the
            respective methods  <span class="methodname">getDecoratedObject()</span> and
             <span class="methodname">getDecoratedObjectName()</span>.
        </p>
    </div>

    <div class="section" id="zend.service.strikeiron.handling-errors"><div class="info"><h1 class="title">Handling Errors</h1></div>
        

        <p class="para">
            The previous examples are naive, i.e. no error handling was shown.
            It&#039;s possible that StrikeIron will return a fault during a method
            call. Events like bad account credentials or an expired subscription
            can cause StrikeIron to raise a fault.
        </p>

        <p class="para">
            An exception will be thrown when such a fault occurs. You should
            anticipate and catch these exceptions when making method calls to the
            service:
        </p>

        <pre class="programlisting brush: php">
$strikeIron = new Zend_Service_StrikeIron(array(&#039;username&#039; =&gt; &#039;your-username&#039;,
                                                &#039;password&#039; =&gt; &#039;your-password&#039;));

$taxBasic = $strikeIron-&gt;getService(array(&#039;class&#039; =&gt; &#039;SalesUseTaxBasic&#039;));

try {

  $taxBasic-&gt;getTaxRateCanada(array(&#039;province&#039; =&gt; &#039;ontario&#039;));

} catch (Zend_Service_StrikeIron_Exception $e) {

  // error handling for events like connection
  // problems or subscription errors

}
</pre>


        <p class="para">
            The exceptions thrown will always be
            <span class="classname">Zend_Service_StrikeIron_Exception</span>.
        </p>

        <p class="para">
            It&#039;s important to understand the difference between exceptions and
            normal failed method calls. Exceptions occur for
            <em class="emphasis">exceptional</em> conditions, such as
            the network going down or your subscription expiring.
            Failed method calls that are a common occurrence,
            such as  <span class="methodname">getTaxRateCanada()</span> not finding the
            <span class="property">province</span> you supplied, will not result an in exception.
        </p>

        <blockquote class="note"><p><b class="note">Note</b>: 
            <p class="para">
                Every time you make a method call to a StrikeIron service, you
                should check the response object for validity and also be
                prepared to catch an exception.
            </p>
        </p></blockquote>

        <p class="para"></p>
    </div>

    <div class="section" id="zend.service.strikeiron.checking-subscription"><div class="info"><h1 class="title">Checking Your Subscription</h1></div>
        

        <p class="para">
            StrikeIron provides many different services. Some of these are
            free, some are available on a trial basis, and some are pay subscription only.
            When using StrikeIron, it&#039;s important to be aware of your subscription
            status for the services you are using and check it regularly.
        </p>

        <p class="para">
            Each StrikeIron client returned by the  <span class="methodname">getService()</span> method
            has the ability to check the subscription status for that service using
            the  <span class="methodname">getSubscriptionInfo()</span> method of the client:
        </p>

        <pre class="programlisting brush: php">
// Get a client for the Sales &amp; Use Tax Basic service
$strikeIron = new Zend_Service_StrikeIron(array(&#039;username&#039; =&gt; &#039;your-username&#039;,
                                                &#039;password&#039; =&gt; &#039;your-password&#039;));

$taxBasic = $strikeIron-&gt;getService(array(&#039;class =&gt; &#039;SalesUseTaxBasic&#039;));

// Check remaining hits for the Sales &amp; Use Tax Basic service
$subscription = $taxBasic-&gt;getSubscriptionInfo();
echo $subscription-&gt;remainingHits;
</pre>


        <p class="para">
            The  <span class="methodname">getSubscriptionInfo()</span> method will return an object
            that typically has a <span class="property">remainingHits</span> property. It&#039;s
            important to check the status on each service that you are using. If
            a method call is made to StrikeIron after the remaining hits have been
            used up, an exception will occur.
        </p>

        <p class="para">
            Checking your subscription to a service does not use any remaining
            hits to the service. Each time any method call to the service is made,
            the number of hits remaining will be cached and this cached value will
            be returned by  <span class="methodname">getSubscriptionInfo()</span> without connecting
            to the service again. To force  <span class="methodname">getSubscriptionInfo()</span>
            to override its cache and query the subscription information again, use
             <span class="methodname">getSubscriptionInfo(true)</span>.
        </p>
    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.service.slideshare.html">Zend_Service_SlideShare</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.service.html">Zend_Service</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.service.strikeiron.bundled-services.html">Zend_Service_StrikeIron: Bundled Services</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="reference.html">Refer&ecirc;ncia do Zend Framework</a></li>
  <li class="header up"><a href="zend.service.html">Zend_Service</a></li>
  <li><a href="zend.service.introduction.html">Introdu&ccedil;&atilde;o</a></li>
  <li><a href="zend.service.akismet.html">Zend_Service_Akismet</a></li>
  <li><a href="zend.service.amazon.html">Zend_Service_Amazon</a></li>
  <li><a href="zend.service.amazon.ec2.html">Zend_Service_Amazon_Ec2</a></li>
  <li><a href="zend.service.amazon.ec2.instance.html">Zend_Service_Amazon_Ec2: Instances</a></li>
  <li><a href="zend.service.amazon.ec2.windows.instance.html">Zend_Service_Amazon_Ec2: Windows Instances</a></li>
  <li><a href="zend.service.amazon.ec2.reserved.instance.html">Zend_Service_Amazon_Ec2: Reserved Instances</a></li>
  <li><a href="zend.service.amazon.ec2.cloudwatch.html">Zend_Service_Amazon_Ec2: CloudWatch Monitoring</a></li>
  <li><a href="zend.service.amazon.ec2.images.html">Zend_Service_Amazon_Ec2: Amazon Machine Images (AMI)</a></li>
  <li><a href="zend.service.amazon.ec2.ebs.html">Zend_Service_Amazon_Ec2: Elastic Block Storage (EBS)</a></li>
  <li><a href="zend.service.amazon.ec2.elasticip.html">Zend_Service_Amazon_Ec2: Elastic IP Addresses</a></li>
  <li><a href="zend.service.amazon.ec2.keypairs.html">Zend_Service_Amazon_Ec2: Keypairs</a></li>
  <li><a href="zend.service.amazon.ec2.zones.html">Zend_Service_Amazon_Ec2: Regions and Availability Zones</a></li>
  <li><a href="zend.service.amazon.ec2.securitygroups.html">Zend_Service_Amazon_Ec2: Security Groups</a></li>
  <li><a href="zend.service.amazon.s3.html">Zend_Service_Amazon_S3</a></li>
  <li><a href="zend.service.amazon.sqs.html">Zend_Service_Amazon_Sqs</a></li>
  <li><a href="zend.service.audioscrobbler.html">Zend_Service_Audioscrobbler</a></li>
  <li><a href="zend.service.delicious.html">Zend_Service_Delicious</a></li>
  <li><a href="zend.service.developergarden.html">Zend_Service_DeveloperGarden</a></li>
  <li><a href="zend.service.ebay.html">Zend_Service_Ebay</a></li>
  <li><a href="zend.service.ebay.finding.html">Zend_Service_Ebay_Finding</a></li>
  <li><a href="zend.service.flickr.html">Zend_Service_Flickr</a></li>
  <li><a href="zend.service.livedocx.html">Zend_Service_LiveDocx</a></li>
  <li><a href="zend.service.nirvanix.html">Zend_Service_Nirvanix</a></li>
  <li><a href="zend.service.recaptcha.html">Zend_Service_ReCaptcha</a></li>
  <li><a href="zend.service.short-url.html">Zend_Service_ShortUrl</a></li>
  <li><a href="zend.service.simpy.html">Zend_Service_Simpy</a></li>
  <li><a href="zend.service.slideshare.html">Zend_Service_SlideShare</a></li>
  <li class="active"><a href="zend.service.strikeiron.html">Zend_Service_StrikeIron</a></li>
  <li><a href="zend.service.strikeiron.bundled-services.html">Zend_Service_StrikeIron: Bundled Services</a></li>
  <li><a href="zend.service.strikeiron.advanced-uses.html">Zend_Service_StrikeIron: Advanced Uses</a></li>
  <li><a href="zend.service.technorati.html">Zend_Service_Technorati</a></li>
  <li><a href="zend.service.twitter.html">Zend_Service_Twitter</a></li>
  <li><a href="zend.service.windowsazure.html">Zend_Service_WindowsAzure</a></li>
  <li><a href="zend.service.windowsazure.storage.blob.html">Zend_Service_WindowsAzure_Storage_Blob</a></li>
  <li><a href="zend.service.windowsazure.diagnostics.manager.html">Zend_Service_WindowsAzure_Diagnostics_Manager</a></li>
  <li><a href="zend.service.windowsazure.storage.queue.html">Zend_Service_WindowsAzure_Storage_Queue</a></li>
  <li><a href="zend.service.windowsazure.storage.table.html">Zend_Service_WindowsAzure_Storage_Table</a></li>
  <li><a href="zend.service.yahoo.html">Zend_Service_Yahoo</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>